/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
window.onload = init;

//var listeElements = new Array("annee","promo","groupe","matiere","controle");
var listeElements = new Array("annee","promo","matiere","controle");

var annee;
var promo;
//var groupe;
var matiere;
var controle;
var classement = "nom";
var asc = "yes";

function in_array(arr, obj) {
    for(var i=0; i<arr.length; i++) {
        if (arr[i] == obj) return i;
    }
    return -1;
}

//Va remettre à 0 les listes déroulantes dépassant start
function epurer(start){
    
    var i = in_array(listeElements, start);
    var cpt = listeElements.length-1;
    for(cpt; cpt>=i; cpt--){
    
        while (document.getElementById(listeElements[cpt]).length > 1){
            document.getElementById(listeElements[cpt]).remove(document.getElementById(listeElements[cpt]).length - 1);
        }
        document.getElementById(listeElements[cpt]).disabled = true;
    }
    cpt++;
    for(cpt; cpt>=0; cpt--){
        document.getElementById(listeElements[cpt]).disabled = false;
    }
}

function parseNAdd(parsed, element, name){
    
    epurer(element);
    
    var liste = parsed.split("/");
    var i;
    for(i=0; i<liste.length-1; i++){
        var elOptNew = document.createElement('option');
        elOptNew.text = liste[i];
        elOptNew.value = liste[i];
        elOptNew.setAttribute("name", name);
        elOptNew.setAttribute("id", name);
        var elSel = document.getElementById(element);

        try {elSel.add(elOptNew, null);} // Méthode "standard"
        catch(ex) {elSel.add(elOptNew);} // Méthode "IE"
    }
}

function peuplerTableau(parsed){
    //TODO : Penser à supprimer les données avant de repeupler.
    var tab = document.getElementById("tabResultats");
    while(tab.rows.length != 1){
        tab.deleteRow(-1);
    }
    var liste = parsed.split("/");
    var i, j, newCell, newText;
    for(i=0; i<liste.length-1; i++){
        var elts = liste[i].split("---");
        var newRow = tab.insertRow(-1);
        if(i%2 == 1) newRow.style.backgroundColor = "#FFFF55";
        else newRow.style.backgroundColor = "#55FFFF";
        
        for(j=0; j<elts.length; j++){
            newCell  = newRow.insertCell(j);
            newText  = document.createTextNode(elts[j]);
            newCell.appendChild(newText);
        }
    }
    
}

function changerOrdre(colonne){
    classement = colonne;
    if(asc == "yes") asc="no";
    else asc="yes";
    
    confirmerFormulaire("tableau");
    
}

function init(){
    
    document.getElementById("annee").onchange = anneeChoisie;
    document.getElementById("promo").onchange = promoChoisie;
    //document.getElementById("groupe").onchange = groupeChoisi;
    document.getElementById("matiere").onchange = matiereChoisie;
    document.getElementById("confirmerFormulaire").onclick = function(){confirmerFormulaire("bouton");};
    
    document.getElementById("tabNom").onclick = function(){changerOrdre("nom");};
    document.getElementById("tabPrenom").onclick = function(){changerOrdre("prenom");};
    document.getElementById("tabGroupe").onclick = function(){changerOrdre("groupe");};
    document.getElementById("tabDemiGroupe").onclick = function(){changerOrdre("demigroupe");};
    document.getElementById("tabNote").onclick = function(){changerOrdre("note");};
    
    var xhr = createXhrObject();
    xhr.onreadystatechange = function() {
		if (xhr.readyState == 4) {
                    parseNAdd(xhr.responseText, 'annee', 'optionAnnee');
		}
    };
    xhr.open("GET", "racine/consulterArchives?action=getBases", true); 
    xhr.send(null);
}

function anneeChoisie(){
        if(!(document.getElementsByName('optionAnnee')[document.getElementById('annee').selectedIndex].innerHTML == "...")){
                annee = document.getElementsByName('optionAnnee')[document.getElementById('annee').selectedIndex].innerHTML;
                

                    var xhr = createXhrObject();
                    xhr.onreadystatechange = function() {
                            if (xhr.readyState == 4) {
                                parseNAdd(xhr.responseText, 'promo', 'optionPromo');
                                    
                            }
                    };
                    xhr.open("GET", "racine/consulterArchives?action=search&annee="+annee, true); 
                    xhr.send(null);
        }
        else{epurer("promo");}
}

function promoChoisie(){
        if(!(document.getElementsByName('optionPromo')[document.getElementById('promo').selectedIndex].innerHTML == "...")){
                promo = document.getElementsByName('optionPromo')[document.getElementById('promo').selectedIndex].innerHTML;
               

                    var xhr = createXhrObject();
                    xhr.onreadystatechange = function() {
                            if (xhr.readyState == 4) {
                                parseNAdd(xhr.responseText, 'matiere', 'optionMatiere');
                                    
                            }
                    };
                    xhr.open("GET", "racine/consulterArchives?action=search&annee="+annee+"&promo="+promo, true); 
                    xhr.send(null);
        }      
        else{epurer("groupe");}
}

/*function groupeChoisi(){
        if(!(document.getElementsByName('optionGroupe')[document.getElementById('groupe').selectedIndex].innerHTML == "...")){
                groupe = document.getElementsByName('optionGroupe')[document.getElementById('groupe').selectedIndex].innerHTML;
               

                    var xhr = createXhrObject();
                    xhr.onreadystatechange = function() {
                            if (xhr.readyState == 4) {
                                parseNAdd(xhr.responseText, 'matiere', 'optionMatiere');
                                    
                            }
                    };
                    xhr.open("GET", "racine/consulterArchives?action=search&annee="+annee+"&promo="+promo+"&groupe="+groupe, true); 
                    xhr.send(null);
        }      
        else{epurer("matiere");}
}*/
            
function matiereChoisie(){
        if(!(document.getElementsByName('optionMatiere')[document.getElementById('matiere').selectedIndex].innerHTML == "...")){
                matiere = document.getElementsByName('optionMatiere')[document.getElementById('matiere').selectedIndex].innerHTML;
               

                    var xhr = createXhrObject();
                    xhr.onreadystatechange = function() {
                            if (xhr.readyState == 4) {
                                parseNAdd(xhr.responseText, 'controle', 'optionControle');
                                    
                            }
                    };
                    xhr.open("GET", "racine/consulterArchives?action=search&annee="+annee+"&promo="+promo+"&matiere="+matiere, true); 
                    xhr.send(null);
        }      
        else{epurer("controle");}
}
function confirmerFormulaire(trigger){
        if(!(document.getElementsByName('optionControle')[document.getElementById('controle').selectedIndex].innerHTML == "...")){
               controle = document.getElementsByName('optionControle')[document.getElementById('controle').selectedIndex].innerHTML;
               

                    var xhr = createXhrObject();
                    xhr.onreadystatechange = function() {
                            if (xhr.readyState == 4) {
                                peuplerTableau(xhr.responseText);
                            }
                    };
                    xhr.open("GET", "racine/consulterArchives?action=search&annee="+annee+"&promo="+promo+"&matiere="+matiere+"&controle="+controle+"&notes=yes&classement="+classement+"&asc="+asc, true); 
                    xhr.send(null);
        }      
        else{
            if(!(document.getElementsByName('optionMatiere')[document.getElementById('matiere').selectedIndex].innerHTML == "...")){
                var xhr = createXhrObject();
                    xhr.onreadystatechange = function() {
                            if (xhr.readyState == 4) {
                                peuplerTableau(xhr.responseText);
                            }
                    };
                    xhr.open("GET", "racine/consulterArchives?action=search&annee="+annee+"&promo="+promo+"&matiere="+matiere+"&moyennes=yes&classement="+classement+"&asc="+asc, true); 
                    xhr.send(null);
            }
            else{
                if(trigger != "tableau") window.alert("Veuillez s\351lectionner l'ann\351e, la promotion, le groupe, la mati\350re (et \351ventuellement le contr\364le) avant de continuer.")
            }
            
            
        }
}
//Permet de créer l'objet XMLHTTPREQUEST
function createXhrObject(){
    if (window.XMLHttpRequest)
        return new XMLHttpRequest();
 
    if (window.ActiveXObject){
        var names = [
            "Msxml2.XMLHTTP.6.0",
            "Msxml2.XMLHTTP.3.0",
            "Msxml2.XMLHTTP",
            "Microsoft.XMLHTTP"
        ];
        for(var i in names)
        {
            try{return new ActiveXObject(names[i]);}
            catch(e){}
        }
    }
    window.alert("Votre navigateur ne prend pas en charge l'objet XMLHTTPRequest.");
    return null;
}
